package com.lagou.StageTwo.Assignment1;

public class Assignment1 {

    /**
     * 1. 编程实现以下需求：
     *
     * 定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值，分别实现二维数组中所有行和所有列中所有元素的累加和并打印。
     *
     * 再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。
     */

    static int [][] arr = new int[16][16];

    public static void main(String[] args) {
        //给数组中每个位置赋值
        for (int i =0;i<16;i++){
            for (int x = 0; x<16; x++){
                arr[i][x]= (int) (Math.random()*10);
            }
        }
        //2.再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。
        Assignment1 assignment1 = new Assignment1();
        System.out.println("******************************************************************************");
        //行总和
        int[] sum1 = new int[16];
        //列总和
        int[] sum2 = new int[16];
        for (int i =0;i<16;i++){
            for (int x = 0; x<16; x++){
                sum1[i] += arr[i][x];
                sum2[i] += arr[x][i];
                System.out.print(arr[i][x]+"   ");
            }
            System.out.print("---->"+sum1[i]);
            System.out.println();
        }
        for (int i =0;i<sum2.length;i++){
            System.out.print("^"+"   ");
        }
        System.out.println();
        for (int i=0;i< sum2.length;i++){
            System.out.print(sum2[i]+"  ");
        }
        System.out.println();
        assignment1.left_right();
        assignment1.right_left();
    }


    //左上角到右下角
    public void left_right(){
        System.out.println("******************************************************************************");
        int sumHang = 0;
        for (int i =0;i< arr.length;i++){
            for (int x = 0; x<=i; x++){
                System.out.print(arr[i][x]+" ");
                sumHang+=arr[i][x];
            }
            System.out.println();
        }
        System.out.println("二维数组中左上角到右下角的和="+sumHang);
    }


    //右上角到左下角

    /**
     * 1    16
     * 2    16 15
     * 3    16 15 14
     * 4    16 15 14 13
     * 5    16 15 14 13 12
     */
    public void right_left(){
        System.out.println("******************************************************************************");
        int sumHang = 0;
        for (int i =1;i<=arr.length;i++){
            for (int x = arr.length-i; x<arr.length; x++){
                System.out.print(arr[i-1][x]+" ");
                sumHang+=arr[i-1][x];
            }
            System.out.println();
        }
        System.out.println("二维数组中右上角到左下角的和="+sumHang);
    }




}
